package com.ecoolex.union.pay.retailer.core.manager;

import org.springframework.util.StringUtils;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

public class UnionPayCouponCurrencyCodeManager {

    static final Map<String, String> CURRENCY_CODE = new ConcurrentHashMap<>(180);

    static {
        CURRENCY_CODE.put("BYR", "974");//白俄罗斯卢布
        CURRENCY_CODE.put("BIF", "108");//布隆迪法郎
        CURRENCY_CODE.put("XAF", "950");//中非金融合作法郎
        CURRENCY_CODE.put("CLP", "152");//智利比索
        CURRENCY_CODE.put("CLF", "990");//智利比索（可兑换的基金）
        CURRENCY_CODE.put("KMF", "174");//科摩罗法郎
        CURRENCY_CODE.put("DJF", "262");//吉布提法郎
        CURRENCY_CODE.put("IDR", "360");//印度尼西亚盾
        CURRENCY_CODE.put("XPF", "953");//太平洋法郎
        CURRENCY_CODE.put("GNF", "324");//几内亚法郎
        CURRENCY_CODE.put("JPY", "392");//日圆
        CURRENCY_CODE.put("KRW", "410");//韩圆
        CURRENCY_CODE.put("XOF", "952");//非洲金融共同体法郎
        CURRENCY_CODE.put("PYG", "600");//巴拉圭瓜拉尼
        CURRENCY_CODE.put("RWF", "646");//卢旺达法郎
        CURRENCY_CODE.put("VUV", "548");//瓦努阿图瓦图
        CURRENCY_CODE.put("AFN", "971");//阿富汗阿富汗尼
        CURRENCY_CODE.put("ALL", "008");//阿尔巴尼亚列克
        CURRENCY_CODE.put("DZD", "012");//阿尔及利亚第纳尔
        CURRENCY_CODE.put("EUR", "978");//欧元
        CURRENCY_CODE.put("AOA", "973");//安哥拉宽扎
        CURRENCY_CODE.put("XCD", "951");//东加勒比元
        CURRENCY_CODE.put("ARS", "032");//阿根廷比绍
        CURRENCY_CODE.put("AMD", "051");//亚美尼亚德拉姆
        CURRENCY_CODE.put("AWG", "533");//阿鲁巴弗罗林
        CURRENCY_CODE.put("AUD", "036");//澳大利亚元
        CURRENCY_CODE.put("AZN", "944");//阿塞拜疆马纳特
        CURRENCY_CODE.put("BSD", "044");//巴哈马元
        CURRENCY_CODE.put("BDT", "050");//孟加拉塔卡
        CURRENCY_CODE.put("BBD", "052");//巴巴多斯元
        CURRENCY_CODE.put("BZD", "084");//伯利兹元
        CURRENCY_CODE.put("BMD", "060");//百慕大元
        CURRENCY_CODE.put("INR", "356");//印度卢比
        CURRENCY_CODE.put("BTN", "064");//不丹努扎姆
        CURRENCY_CODE.put("BOB", "068");//玻利维亚玻利维亚诺
        CURRENCY_CODE.put("BOV", "984");//玻利维亚
        CURRENCY_CODE.put("BAM", "977");//波斯尼亚和黑塞哥维那可兑换马克
        CURRENCY_CODE.put("BWP", "072");//博茨瓦纳普拉
        CURRENCY_CODE.put("NOK", "578");//挪威克朗
        CURRENCY_CODE.put("BRL", "986");//巴西雷亚尔
        CURRENCY_CODE.put("BND", "096");//文莱元
        CURRENCY_CODE.put("BGN", "975");//保加利亚列弗
        CURRENCY_CODE.put("KHR", "116");//柬埔寨瑞尔
        CURRENCY_CODE.put("CAD", "124");//加拿大元
        CURRENCY_CODE.put("CVE", "132");//佛得角埃斯库多
        CURRENCY_CODE.put("KYD", "136");//开曼元
        CURRENCY_CODE.put("CNY", "156");//中国人民币元
        CURRENCY_CODE.put("COP", "170");//哥伦比亚比索
        CURRENCY_CODE.put("COU", "970");//哥伦比亚unidad
        CURRENCY_CODE.put("CDF", "976");//刚果民主共和国刚果法郎
        CURRENCY_CODE.put("NZD", "554");//新西兰元
        CURRENCY_CODE.put("CRC", "188");//哥斯达黎加科朗
        CURRENCY_CODE.put("HRK", "191");//克罗地亚库纳
        CURRENCY_CODE.put("CUP", "192");//古巴比索
        CURRENCY_CODE.put("CUC", "931");//可自由兑换比索
        CURRENCY_CODE.put("CZK", "203");//捷克克朗
        CURRENCY_CODE.put("DKK", "208");//丹麦克朗
        CURRENCY_CODE.put("DOP", "214");//多米尼加比索
        CURRENCY_CODE.put("EGP", "818");//埃及镑
        CURRENCY_CODE.put("SVC", "222");//萨尔瓦多科朗
        CURRENCY_CODE.put("ERN", "232");//厄立特里亚纳克法
        CURRENCY_CODE.put("ETB", "230");//埃塞俄比亚比尔
        CURRENCY_CODE.put("FKP", "238");//福克兰镑
        CURRENCY_CODE.put("FJD", "242");//斐济元
        CURRENCY_CODE.put("GMD", "270");//冈比亚达拉西
        CURRENCY_CODE.put("GEL", "981");//格鲁吉亚拉里
        CURRENCY_CODE.put("GHS", "936");//塞地
        CURRENCY_CODE.put("GIP", "292");//直布罗陀镑
        CURRENCY_CODE.put("GTQ", "320");//危地马拉格查尔
        CURRENCY_CODE.put("GYD", "328");//圭亚那元
        CURRENCY_CODE.put("HTG", "332");//海地古德
        CURRENCY_CODE.put("USD", "840");//美元
        CURRENCY_CODE.put("HNL", "340");//洪都拉斯伦皮拉
        CURRENCY_CODE.put("HKD", "344");//香港元
        CURRENCY_CODE.put("HUF", "348");//匈牙利
        CURRENCY_CODE.put("ISK", "352");//冰岛克朗
        CURRENCY_CODE.put("IRR", "364");//伊朗里亚尔
        CURRENCY_CODE.put("ILS", "376");//以色列新谢克尔
        CURRENCY_CODE.put("JMD", "388");//牙买加元
        CURRENCY_CODE.put("KZT", "398");//哈萨克斯坦坚戈
        CURRENCY_CODE.put("KES", "404");//肯尼亚先令
        CURRENCY_CODE.put("KPW", "408");//朝鲜圆
        CURRENCY_CODE.put("KGS", "417");//吉尔吉斯斯坦索姆
        CURRENCY_CODE.put("LAK", "418");//老挝基普
        CURRENCY_CODE.put("LVL", "428");//拉脱维亚拉特
        CURRENCY_CODE.put("LBP", "422");//黎巴嫩镑
        CURRENCY_CODE.put("LSL", "426");//莱索托洛蒂
        CURRENCY_CODE.put("LRD", "430");//利比里亚元
        CURRENCY_CODE.put("CHF", "756");//瑞士法郎
        CURRENCY_CODE.put("LTL", "440");//立陶宛立特
        CURRENCY_CODE.put("MOP", "446");//澳门元
        CURRENCY_CODE.put("MKD", "807");//前南马其顿代纳尔
        CURRENCY_CODE.put("MGA", "969");//马达加斯加阿里亚里
        CURRENCY_CODE.put("MWK", "454");//马拉维克瓦查
        CURRENCY_CODE.put("MYR", "458");//林吉特
        CURRENCY_CODE.put("MVR", "462");//马尔代夫拉菲亚
        CURRENCY_CODE.put("MRO", "478");//毛里塔尼亚乌吉亚
        CURRENCY_CODE.put("MUR", "480");//毛里求斯卢比
        CURRENCY_CODE.put("MXN", "484");//墨西哥比索
        CURRENCY_CODE.put("MDL", "498");//摩尔多瓦列伊
        CURRENCY_CODE.put("MNT", "496");//蒙古图格里克
        CURRENCY_CODE.put("MAD", "504");//摩洛哥迪拉姆
        CURRENCY_CODE.put("MZN", "943");//麦梯卡尔
        CURRENCY_CODE.put("MMK", "104");//缅甸元（缅元）
        CURRENCY_CODE.put("NAD", "516");//纳米比亚元
        CURRENCY_CODE.put("ZAR", "710");//南非兰特
        CURRENCY_CODE.put("NPR", "524");//尼泊尔卢比
        CURRENCY_CODE.put("ANG", "532");//荷属安的列斯盾
        CURRENCY_CODE.put("NIO", "558");//尼加拉瓜科多巴
        CURRENCY_CODE.put("NGN", "566");//尼日利亚奈拉
        CURRENCY_CODE.put("PKR", "586");//巴基斯坦卢比
        CURRENCY_CODE.put("PAB", "590");//巴拿马巴波亚
        CURRENCY_CODE.put("PGK", "598");//巴布亚新几内亚基那
        CURRENCY_CODE.put("PEN", "604");//秘鲁新索尔
        CURRENCY_CODE.put("PHP", "608");//菲律宾比索
        CURRENCY_CODE.put("PLN", "985");//波兰茲罗提
        CURRENCY_CODE.put("QAR", "634");//卡塔尔里亚尔
        CURRENCY_CODE.put("RON", "946");//
        CURRENCY_CODE.put("RUB", "643");//俄罗斯卢布
        CURRENCY_CODE.put("WST", "882");//萨摩亚塔拉
        CURRENCY_CODE.put("STD", "678");//圣多美和普林西比多布拉
        CURRENCY_CODE.put("SAR", "682");//沙特里亚尔
        CURRENCY_CODE.put("CSD", "891");//塞尔维亚第纳尔
        CURRENCY_CODE.put("RSD", "941");//塞尔维亚第纳尔
        CURRENCY_CODE.put("SCR", "690");//塞舌尔卢比
        CURRENCY_CODE.put("SLL", "694");//塞拉利昂利昂
        CURRENCY_CODE.put("SGD", "702");//新加坡元
        CURRENCY_CODE.put("SBD", "090");//所罗门群岛元
        CURRENCY_CODE.put("SOS", "706");//索马里先令
        CURRENCY_CODE.put("LKR", "144");//斯里兰卡卢比
        CURRENCY_CODE.put("SHP", "654");//圣赫勒拿镑
        CURRENCY_CODE.put("SDG", "938");//苏丹磅
        CURRENCY_CODE.put("SRD", "968");//苏里南元
        CURRENCY_CODE.put("SZL", "748");//斯威士兰里兰吉尼
        CURRENCY_CODE.put("SEK", "752");//瑞典克朗
        CURRENCY_CODE.put("SYP", "760");//叙利亚镑
        CURRENCY_CODE.put("TWD", "901");//新台币元
        CURRENCY_CODE.put("TJS", "972");//塔吉克斯坦索莫尼
        CURRENCY_CODE.put("TZS", "834");//坦桑尼亚先令
        CURRENCY_CODE.put("THB", "764");//泰铢
        CURRENCY_CODE.put("TOP", "776");//汤加潘加
        CURRENCY_CODE.put("TTD", "780");//特立尼达和多巴哥元
        CURRENCY_CODE.put("TRY", "949");//新土耳其里拉
        CURRENCY_CODE.put("TMT", "934");//
        CURRENCY_CODE.put("UGX", "800");//乌干达先令
        CURRENCY_CODE.put("UAH", "980");//乌克兰格里夫尼亚
        CURRENCY_CODE.put("AED", "784");//阿拉伯联合酋长国迪尔汗
        CURRENCY_CODE.put("GBP", "826");//英镑
        CURRENCY_CODE.put("UYU", "858");//乌拉圭比索
        CURRENCY_CODE.put("UZS", "860");//乌兹别克斯坦苏姆
        CURRENCY_CODE.put("VEF", "937");//玻利瓦尔
        CURRENCY_CODE.put("VND", "704");//越南盾
        CURRENCY_CODE.put("YER", "886");//也门里亚尔
        CURRENCY_CODE.put("ZMK", "894");//赞比亚克瓦查
        CURRENCY_CODE.put("ZMW", "967");//赞比亚元
        CURRENCY_CODE.put("ZWL", "932");//津巴布韦元
        CURRENCY_CODE.put("BHD", "048");//巴林第纳尔
        CURRENCY_CODE.put("IQD", "368");//伊拉克第纳尔
        CURRENCY_CODE.put("JOD", "400");//约旦第纳尔
        CURRENCY_CODE.put("KWD", "414");//科威特第纳尔
        CURRENCY_CODE.put("LYD", "434");//利比亚第纳尔
        CURRENCY_CODE.put("OMR", "512");//阿曼里亚尔
        CURRENCY_CODE.put("TND", "788");//突尼斯第纳尔
        CURRENCY_CODE.put("SDP", "728");//南苏丹磅


    }

    public static String translateCurrencyCode(String orgin) {
        if (StringUtils.hasLength(orgin)){
            orgin = orgin.toUpperCase().trim();
        }
        return CURRENCY_CODE.getOrDefault(orgin,orgin);
    }
}
